package com.行为型模型.S中介者模式;

/**
 * 1，优点：
 * 	松散耦合
 * 		中介者模式通过把多个同事对象之间的交互封装到中介者对象里面，从而使得同事对象之间松散耦 合，
 * 		基本上可以做到互补依赖。这样一来，同事对象就可以独立地变化和复用，而不再像以前那样 “牵一处而动全身”了。
 * 	集中控制交互
 * 	 多个同事对象的交互，被封装在中介者对象里面集中管理，使得这些交互行为发生变化的时候，
 * 	 只 需要修改中介者对象就可以了，当然如果是已经做好的系统，那么就扩展中介者对象，而各个同事 类不需要做修改。
 * 	一对多关联转变为一对一的关联
 * 		没有使用中介者模式的时候，同事对象之间的关系通常是一对多的，引入中介者对象以后，中介者 对象和同事对象的关系通常变成双向的一对一，
 * 		这会让对象的关系更容易理解和实现。
 * 2，缺点：
 * 当同事类太多时，中介者的职责将很大，它会变得复杂而庞大，以至于系统难以维护。
 * 使用场景
 * 	系统中对象之间存在复杂的引用关系，系统结构混乱且难以理解。 当想创建一个运行于多个类之间的对象，又不想生成新的子类时。
 */
public class Test {
    public static void main(String[] args) {
        //一个房主 一个租户 一个中介机构
        MediatorStructure mediatorStructure=new MediatorStructure();
        //房主和租户只需要知道中介机构即可
        HouseOwner houseOwner=new HouseOwner("张三",mediatorStructure);
        Tenant tenant=new Tenant("李四",mediatorStructure);
        //中介机构要知道房主和租户
        mediatorStructure.setHouseOwner(houseOwner);
        mediatorStructure.setTenant(tenant);

        tenant.contact("老子要租房");
        houseOwner.contact("老子有房向外出租");



    }
}
